A given digital color output device produces colors by varying the colorant levels of its associated colorants. For a subtractive device, such as most color printers and printing presses, these colorants are usually cyan, magenta, yellow, and sometimes black. For an additive device such as a typical video display these colorants are usually red, green, and blue.
The colors which can be reproduced on the device can be reached by varying each of the primary colorants between their minimum and maximum values. Typically the amount of each of the colorants is determined by a device control signal. A lattice of these device control signals is shown in FIG. 1 for a typical 3-color printer such as a thermal dye sublimation printer, or an ink-jet printer. Each of the dimensions of the lattice is associated with a different colorant. Any color which can be reproduced by the printer can be represented by a point within this lattice.
The device control values themselves do not contain any information about the color reproduction characteristics of the device without knowledge of the spectral characteristics of the colorants and the tone response of the device. Typically the color reproduction characteristics of a device are obtained by determining (theoretically or by measurement) the response of the device in some device-independent color space. FIG. 2 shows an example where the colors formed from the lattice of control values in FIG. 1 have been represented in the CIELAB device-independent color space.
The volume of colors which can be produced by the device is known as the color gamut. In general, each device will have a different color gamut associated with it. Furthermore, sending the same control signals to different devices will generally produce different colors. As a result, color transformations are often necessary to convert the color image data into a form which is appropriate for display/printing on a particular output device. The goal in this case is to convert the input color values into the device control signals which will produce the "desired color" on the selected output device. The definition of the desired color is often dependent on the image content, the intended use of the image, the color gamut of the specific display device, as well as on personal preference. Examples of typical color reproduction goals embodied in said color transformations would include forming a colorimetric match to accurately reproduce the colors produced on some reference display, producing an image with the most saturated colors possible, or producing an image with a "photographic" tone scale.
Because of the fact that different color reproduction goals may be desirable for different users, applications, and/or images, it is often necessary to provide a number of different choices to the user. For example, a printer may be supplied with a number of different color rendering options which can be specified by the user at print time. These choices would allow the user to select the option which gives the desired color mapping.
However, providing a discrete number of choices to the user is often a less than satisfactory solution. This is due to several reasons. First, the user may not be happy with any of the choices, but may desire a result which is intermediate to the available options. Second, adding more and more options will increase the complexity of the user interface which will make it more confusing, and therefore difficult to make the optimum choice.
Typically the color rendering options are implemented by storing a description of the transformations which must be applied to the color values for each choice. These transformations may be stored as one or a combination of color-correction matrices, 1-D Look-Up Tables (LUTs), 3-D LUTs, etc. Often the storage of these transformations may occupy a substantial amount of memory. This is particularly true for the case of the 3-D LUT which is becoming increasing common in its usage. The addition of color rendering options will therefore have an impact on the memory requirements of the device and/or the device driver software. Additionally, attempting to provide any large number of options will also have an impact on the device driver design and quality assurance process. As more color rendering options are added, the amount of development and testing time increases proportionally.
It can therefore be seen that there are two conflicting problems. First, the user often has a need for flexibility in the way an image is rendered to some particular device. This flexibility may require a large number of options to satisfy the needs of the large number of users, images, and applications. On the other hand, providing a large number of options to the user may be confusing to the average user, and additionally will have a negative impact on the memory requirements and development work needed effort for the device. This invention provides a way to simultaneously address both of these problems by providing a flexible, but simple user interface which is also easy to develop and implement, and has a minimum impact on the device memory requirements.